package com.atguigu.security.custom;

/**
 * ClassName LoginUserInfoHelper
 * Package: com.atguigu.security.custom
 * ProjectName guigu-oa-parent
 * Description: 获取当前用户信息帮助类
 * ThreadLocal是一种特殊的变量，它允许你在多线程环境下为每个线程创建独立的变量副本。
 * 这样，每个线程都可以拥有自己的变量值，而不会影响其他线程。
 * 当线程不再需要使用ThreadLocal变量时，应该调用remove方法来删除当前线程的变量副本。
 * 这是因为如果不删除，这些变量将会一直存在，直到线程结束，可能会导致内存泄漏。
 * <p>
 * 注意，ThreadLocal并不能代替synchronized或者volatile等线程同步机制。
 * 它主要用于解决多线程环境下的数据同步问题，而线程同步机制则用于解决多线程环境下的数据一致性问题。
 *
 * @Author: 比特张
 * @Create: 2023/6/29 - 11:07
 * @Version: v1.0
 */
public class LoginUserInfoHelper {
    private static ThreadLocal<Long> userId = new ThreadLocal<Long>();
    private static ThreadLocal<String> username = new ThreadLocal<String>();

    public static void setUserId(Long _userId) {
        userId.set(_userId);
    }

    public static Long getUserId() {
        return userId.get();
    }

    public static void removeUserId() {
        userId.remove();
    }

    public static void setUsername(String _username) {
        username.set(_username);
    }

    public static String getUsername() {
        return username.get();
    }

    public static void removeUsername() {
        username.remove();
    }
}
